package com.algo.core.filter;

import com.algo.core.RequestContext;
import org.apache.log4j.Logger;

/**
 * 流量控制过滤器，主要作用是啥呢？
 *
 * 业务人员可以通过页面动态的配置资源与其流量，比如说 /order-service/get/{id} 这样的一个接口限制每秒最多被请求 1000次
 * 那么此过滤器就可以将多出来的请求直接在这里拦截掉
 *
 */
public class RateLimitFilter implements RapidFilter {

    private static final Logger logger = Logger.getLogger(RateLimitFilter.class);

    @Override
    public void doFilter(RequestContext requestContext, RapidFilterChain chain) {
        logger.info("rate limit filter is executing");
        chain.doFilter(requestContext, this);
    }

    @Override
    public int getOrder() {
        return FilterOrder.RATE_LIMIT_FILTER.order;
    }
}
